using System;

namespace TangCaptureTraffic
{
    /// <summary>
    /// 内存优化配置类，用于管理应用程序的内存使用策略
    /// </summary>
    public static class MemoryConfig
    {
        /// <summary>
        /// 是否启用自动内存清理
        /// </summary>
        public static bool EnableAutoMemoryCleanup { get; set; } = true;
        
        /// <summary>
        /// 内存清理间隔时间（毫秒）
        /// </summary>
        public static int MemoryCleanupInterval { get; set; } = 30000; // 30秒
        
        /// <summary>
        /// 最大会话数量限制
        /// </summary>
        public static int MaxSessions { get; set; } = 1000;
        
        /// <summary>
        /// 会话清理数量
        /// </summary>
        public static int SessionCleanupCount { get; set; } = 200;
        
        /// <summary>
        /// UI最大会话数量限制
        /// </summary>
        public static int MaxUISessions { get; set; } = 500;
        
        /// <summary>
        /// UI会话清理数量
        /// </summary>
        public static int UISessionCleanupCount { get; set; } = 100;
        
        
        /// <summary>
        /// 内存使用警告阈值（MB）
        /// </summary>
        public static int MemoryWarningThreshold { get; set; } = 500;
        
        /// <summary>
        /// 获取当前内存使用情况（MB）
        /// </summary>
        /// <returns>当前内存使用量（MB）</returns>
        public static long GetCurrentMemoryUsage()
        {
            return GC.GetTotalMemory(false) / 1024 / 1024;
        }
        
        /// <summary>
        /// 检查是否需要内存警告
        /// </summary>
        /// <returns>如果内存使用超过阈值返回true</returns>
        public static bool ShouldShowMemoryWarning()
        {
            return GetCurrentMemoryUsage() > MemoryWarningThreshold;
        }
        
        /// <summary>
        /// 执行强制垃圾回收
        /// </summary>
        public static void ForceGarbageCollection()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
        }
    }
}